/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.webhomesites.padrao.model;

import br.com.webhomesites.padrao.contracts.IClienteDAO;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.hibernate.annotations.Entity;



/**
 *
 * @author Webhome
 */
@Entity
@Table(name="PADCLIENTE")
public class ClienteModel implements Serializable{
    
    @Id 
    @SequenceGenerator(name="CODCLIENTE", sequenceName="CODCLIENTE", allocationSize=1)
    @GeneratedValue(strategy= GenerationType.SEQUENCE, generator="CODCLIENTE")
    @Column(name="CODCLIENTE", nullable=false) 
    private int codigoCliente;
    
    @Column(name="PESSOACLIENTE")
    private String pessoa;
    
    @Column(name="NOMEPESSOA")
    private String nome;
    
    @Column(name="CPFPESSOA")
    private String cpf;
        
    @Column(name="RGPESSOA")
    private String rg;
    
    @Column(name="RAZSOCPESSOA")
    private String razaoSocial;
    
    @Column(name="CNPJPESSOA")
    private String cnpj;
    
    @Column(name="INSCESTPESSOA")
    private String inscricaoEstadual;
    
    @Column(name="TELEFONEPESSOA")
    private String telefone;
    
    @Column(name="CELULARPESSOA")
    private String celular;
    
    @Column(name="EMAILPESSOA")
    private String email;
    
    @Column(name="ENDERECOPESSOA")
    private String endereco;
    
    @Column(name="BAIRROPESSOA")
    private String bairro;
    
    @Transient
    private String cidade;
    @Transient
    private String estado;
    
    //Chaves estrangeiras
    private int codigoEmpresa;
    private int codigoCidade;
    private int codigoEstado;
    
    //Ver anotação transiente
    @Transient
    List<ClienteModel> listaClientes = new ArrayList<>(); 
    @Transient
    IClienteDAO clienteDAO;

    public ClienteModel() {
    }
    
    public ClienteModel(IClienteDAO clienteDAO) {
        this.clienteDAO = clienteDAO;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCelular() {
        return celular;
    }

    public void setCelular(String celular) {
        this.celular = celular;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public String getCnpj() {
        return cnpj;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public int getCodigo() {
        return codigoCliente;
    }

    public void setCodigo(int codigo) {
        this.codigoCliente = codigo;
    }

    public int getCodigoCidade() {
        return codigoCidade;
    }

    public void setCodigoCidade(int codigoCidade) {
        this.codigoCidade = codigoCidade;
    }

    public int getCodigoEmpresa() {
        return codigoEmpresa;
    }

    public void setCodigoEmpresa(int codigoEmpresa) {
        this.codigoEmpresa = codigoEmpresa;
    }

    public int getCodigoEstado() {
        return codigoEstado;
    }

    public void setCodigoEstado(int codigoEstado) {
        this.codigoEstado = codigoEstado;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public String getInscricaoEstadual() {
        return inscricaoEstadual;
    }

    public void setInscricaoEstadual(String inscricaoEstadual) {
        this.inscricaoEstadual = inscricaoEstadual;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getPessoa() {
        return pessoa;
    }

    public void setPessoa(String pessoa) {
        this.pessoa = pessoa;
    }

    public String getRazaoSocial() {
        return razaoSocial;
    }

    public void setRazaoSocial(String razaoSocial) {
        this.razaoSocial = razaoSocial;
    }

    public String getRg() {
        return rg;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public List<ClienteModel> getListaClientes() {
        setListaClientes();
        return listaClientes;
    }

    public void setListaClientes() {
        this.listaClientes = clienteDAO.selecionarTodosClientes();
    }
    
    public int getChaveCliente(String nomeCliente) {
        
        setListaClientes();
        
        int codigoCliente = 0;
                
        for(int i = 0; i < getListaClientes().size(); i++) // Percorro o Array List com o For aprimorado.  
        {  
            if(getListaClientes().get(i).getNome().equals(nomeCliente)) // Adiciono os dados.  
            codigoCliente = getListaClientes().get(i).getCodigo();
        }
        return codigoCliente;
    }
    
    @Override
    public String toString() {
      return "Codigo = " + getCodigo() + "\n" +
             "Pessoa = " + getPessoa() + "\n" +
             "Nome = " + getNome() + "\n" +
             "CPF = " + getCpf() + "\n" +
             "Rg = " + getRg() + "\n" +
             "Razão Social = " + getRazaoSocial() + "\n" +
             "Cnpj = " + getCnpj() + "\n" +
             "Inscrição = " + getInscricaoEstadual() + "\n" +
             "Codigo Cidade = " + getCodigoCidade() + "\n" +
             "Codigo Estado = " + getCodigoEstado() + "\n" +
             "Codigo Endereço = " + getEndereco() + "\n" +
             "Codigo Telefone = " + getTelefone() + "\n" +
             "Codigo Celular = " + getCelular() + "\n" +
             "Codigo E-mail = " + getEmail() + "\n";             
             
    }
    
    public class ParametrosBusca {
        
       private List<String> parametros = new ArrayList<>();

        public List<String> getParametros() {
            setParametros();
            return parametros;
        }

        public void setParametros() {
            parametros.add("Código");
            parametros.add("Nome");
            parametros.add("CPF");
            parametros.add("RG");
            parametros.add("CNPJ");
            parametros.add("IE");
        }
    
    }
    
    
    
}
